package com.boss.salary.dao;

import com.boss.framework.dto.PaginationDTO;
import com.boss.salary.entity.AgencyVerify;
import com.boss.salary.entity.PersonExt;
import com.boss.salary.entity.PersonInfo;
import com.boss.salary.entity.SalaryBankPayBack;

import java.util.List;
import java.util.Map;

public interface IPersonExtDao {
    /**
     * 分页查询 人员信息扩展表数据
     * @param paginationDTO
     * @return
     */
    List<PersonExt> queryPersonExtPage(PaginationDTO paginationDTO);

    /**
     * 获取机构内所有人员信息
     * @param agencyids
     * @return
     */
    List<PersonExt> queryPersonExt(List<String> agencyids);

    /**
     * 获取人员信息扩展表数据数量
     * @return
     */
    int queryPersonExtTotal();

    /**
     * 增加 人员信息扩展表数据
     * @param personExt
     * @return
     */
    void savePersonExt(PersonExt personExt);

    /**
     * 更新 人员信息扩展表数据
     * @param personExt
     * @return
     */
    void updatePersonExt(PersonExt personExt);

    /**
     * 更新 工资是否停发数据
     * @param personInfo
     * @return
     */
    void updateIsStopSalary(PersonInfo personInfo);

    /**
     * 根据id删除人员信息扩展表数据
     * @param id
     * @return
     */
    void deletePersonExt(String id);

    /**
     * 根据身份证号修改工资卡号
     * @param salaryBankPayBack
     */
    void updateSalaCardNoByIdenNo(SalaryBankPayBack salaryBankPayBack);

    /**
     * 根据personId获取personExt人员信息
     * @param personId
     */
    PersonExt selectOnePersonByPersonId(String personId);

    /**
     * 根据人员id删除人员拓展信息
     * @param personId
     */
    void physicalDeleteByPersonId(String personId);

    /**
     * 根据身份证号修改工资卡号
     * @param salaryBankPayBack
     */
    void updatePersonInfoByIdenNo(SalaryBankPayBack salaryBankPayBack);


    /**
     * 通过获取人员信息
     * @param idenNo
     * @return
     */
    PersonExt queryPersonExtByIden(String idenNo,String province);
    /**
     * 据区划号 单位id 查找单位的人数
     * @param code
     * @param id
     * @return
     */
    List<Map<String, Object>> queryPersons(String code, String id);

    /**
     * 机构人员维护修改排序 同时添加 operate begins submits
     * @param personExt
     */
    void updatePersonExts(List<PersonExt> personExt);

    void updateOperates(List<PersonExt> personExt);

    void updateBegins(List<PersonExt> personExt);

    void updateSubmits(List<PersonExt> personExt);


    /**
     *  修改时通过personId 将 dept_id 存入sal_person_operate表中
     * @param personExt
     * @return
     */
    void updateOperate(PersonExt personExt);

    /**
     *  修改时通过personId 将 dept_id 存入sal_person_ext_begin表中
     * @param personExt
     * @return
     */

    void updateBegin(PersonExt personExt);

    /**
     *  修改时通过personId 将 dept_id 存入sal_person_ext_submit表中
     * @param personExt
     * @return
     */
    void updateSubmit(PersonExt personExt);

    /**
     * 修改人员维护编码修改五个表中PersonExt,Operate,Begin,Submit,History
     * @param personExt
     */
    void updatePersonExtPersonnelCode(List<PersonExt> personExt);

    void updateOperatePersonnelCode(List<PersonExt> personExt);

    void updateBeginPersonnelCode(List<PersonExt> personExt);

    void updateSubmitPersonnelCode(List<PersonExt> personExt);

    void updateHistoryPersonnelCode(List<PersonExt> personExt);

    List<PersonExt> queryPersonExtSubmit(List<String> agencyIds);

    List<String> getSalaCardNos(String province);

    void updatePersonExtDaoCode(List<AgencyVerify> updateList);
}
